﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Teenus {
    /// <summary>
    /// Staatiline klass, kus asuvad puhverdatavad muutujad ja meetodid cache haldamiseks. 
    /// </summary>
    public static class Cache {

        private static List<EntityKohvik> kohvikuList;
        private static Dictionary<int, EntityKohvik> kohvikud;
        private static DateTime lastUpdatedKohvikud;

        private static List<EntityValuuta> valuutaList;
        private static DateTime lastUpdatedValuutad;

        private static List<EntityKaup> kaupList;
        private static DateTime lastUpdatedKaubad;

        private static List<EntityKaup> kaupListSimple;     //autocomplete jaoks, entity sisaldab ainult nime
        private static DateTime lastUpdatedKaubadSimple;

        private static List<EntityKategooria> kategooriaList;
        private static DateTime lastUpdatedKategooria;


        public static List<EntityKohvik> getKohvikList() {
            return kohvikuList;
        }

        public static List<EntityKaup> getKaupList() {
            return kaupList;
        }
        
        public static List<EntityKaup> getKaupListSimple() {
            return kaupListSimple;
        }
        
        public static List<EntityKategooria> getKatList() {
            return kategooriaList;
        }


        public static EntityKohvik getKohvikByID(int id) {
            if (kohvikud != null) {
                if (kohvikud.Keys.Contains(id))
                    return kohvikud[id];
                else
                    return null;
            }
            else
                return null;
        }


        public static List<EntityValuuta> getValuutaList() {
            return valuutaList;
        }


        public static void setKohvikud(List<EntityKohvik> list) {
            lastUpdatedKohvikud = DateTime.Now;
            kohvikuList = list;
            kohvikud = new Dictionary<int,EntityKohvik>(list.Count);
            foreach (EntityKohvik kohvik in list) {
                kohvikud.Add(kohvik.Kohvik_ID, kohvik);
            }
        }


        public static void setValuutad(List<EntityValuuta> list) {
            lastUpdatedValuutad = DateTime.Now;
            valuutaList = list;
        }


        public static void setKaubad(List<EntityKaup> list) {
            lastUpdatedKaubad = DateTime.Now;
            kaupList = list;
        }


        public static void setKaubadSimple(List<EntityKaup> list) {
            lastUpdatedKaubadSimple = DateTime.Now;
            kaupListSimple = list;
        }


        public static void setKategooriad(List<EntityKategooria> list) {
            lastUpdatedKategooria = DateTime.Now;
            kategooriaList = list;
        }


        public static void setKohvikListNull() {
            kohvikuList = null;
            kohvikud = null;
        }


        public static void setKategooriaListNull() {
            kategooriaList = null;
        }


        public static void setKaupListNull() {
            kaupList = null;
            kaupListSimple = null;
        }


        public static bool updateCache() {
            //TODO:
            return false;
        }


    }
}
